﻿using System.Collections.Generic;
using System.Linq;
using DTO;

namespace DAO
{
    public class GiaoDienDAO
    {
        public static List<GiaoDienDTO> getAll()
        {
            List<GiaoDienDTO> result = new List<GiaoDienDTO>();
            RaoVatDataContext dbRaoVat = new RaoVatDataContext();

            var query = dbRaoVat.GIAODIENs.Where(dm => dm.Deleted.Equals(0)).ToList();

            foreach (var ds in query)
            {
                GiaoDienDTO dto = new GiaoDienDTO();

                dto.MaGiaoDien = ds.MaGiaoDien;
                dto.TenGiaoDien = ds.TenGiaoDien;
                dto.MaBannerGiaoDien = ds.MaBannerGiaoDien.Value;
                dto.MaLogo = ds.MaLogo.Value;
                dto.MaTheme = ds.MaTheme.Value;
                dto.MaNgonNgu = ds.MaNgonNgu.Value;

                result.Add(dto);
            }

            return result;
        }

        public static GiaoDienDTO getAlongCode(int maGiaoDien)
        {
            GiaoDienDTO result = new GiaoDienDTO();
            RaoVatDataContext dbRaoVat = new RaoVatDataContext();

            var query = dbRaoVat.GIAODIENs.Where(dm => dm.Deleted.Equals(0) &&
                dm.MaGiaoDien == maGiaoDien).Single();

            result.MaGiaoDien = query.MaGiaoDien;
            result.TenGiaoDien = query.TenGiaoDien;
            result.MaBannerGiaoDien = query.MaBannerGiaoDien.Value;
            result.MaLogo = query.MaLogo.Value;
            result.MaTheme = query.MaTheme.Value;
            result.MaNgonNgu = query.MaNgonNgu.Value;

            return result;
        }

        public static void Insert(GiaoDienDTO _insert)
        {
            RaoVatDataContext dbRaoVat = new RaoVatDataContext();

            GIAODIEN giaodien = new GIAODIEN();
            giaodien.TenGiaoDien = _insert.TenGiaoDien;
            giaodien.MaBannerGiaoDien = _insert.MaBannerGiaoDien;
            giaodien.MaLogo = _insert.MaLogo;
            giaodien.MaTheme = _insert.MaTheme;
            giaodien.MaNgonNgu = _insert.MaNgonNgu;
            giaodien.Deleted = _insert.Deleted;

            dbRaoVat.GIAODIENs.InsertOnSubmit(giaodien);
            dbRaoVat.SubmitChanges();
        }

        public static void Delete(int maGiaoDien)
        {
            RaoVatDataContext dbRaoVat = new RaoVatDataContext();

            GIAODIEN _delete = (from n in dbRaoVat.GIAODIENs
                                 where n.MaGiaoDien == maGiaoDien && n.Deleted == 0
                                 select n).Single();

            _delete.Deleted = 1;
            dbRaoVat.SubmitChanges();
        }

        public static void Update(GiaoDienDTO dto)
        {
            RaoVatDataContext dbRaoVat = new RaoVatDataContext();

            GIAODIEN _update = (from n in dbRaoVat.GIAODIENs
                                where n.MaGiaoDien == dto.MaGiaoDien && n.Deleted == 0
                                select n).Single();

            _update.TenGiaoDien = dto.TenGiaoDien;
            _update.MaBannerGiaoDien = dto.MaBannerGiaoDien;
            _update.MaLogo = dto.MaLogo;
            _update.MaTheme = dto.MaTheme;
            _update.MaNgonNgu = dto.MaNgonNgu;

            dbRaoVat.SubmitChanges();
        }
    }
}
